assume cs:code,ss:stackmg

data segment   ; 设置可容纳1300条信息
    data_start db   62400 dup(?)  ;48 * 1300   ;;; db 'A',46 dup(0),77,'B',46 dup(0),88,'C',46 dup(0),99,'D',46 dup(0),44   ;;;      
                 
  
data ends

pointers segment
    pointers_start     dw 1300 dup(?)  ;1 * 1000     ;;;    dw 0,48,96,144  
pointers ends

;================================================================
; 其它函数
include Macro_functions.asm
;================================================================

; 存放所有字符串
include String.asm


; 缓存区：用于存放中间数据
cache_area segment
    cache_area_start db 80 dup(0)
cache_area ends

cache_area2 segment
    cache_area_start2 db 80 dup(0)
cache_area2 ends

; 栈区
stackmg segment stack
        db 128 dup (0)
stackmg ends



;================================================================
code segment
start:
    xor ax,ax   
    push ax     ; ss:[bp+16h]    ; 总人数
    push ax     ; ss:[bp+14h]    
    push ax     ; ss:[bp+12h]    ; 总分数   后半部分
    push ax     ; ss:[bp+10h]    ; 总分数   前半部分
    push ax     ; ss:[bp+0Eh]    ; 平均分
    push ax     ; ss:[bp+0Ch]    ; 最高分
    mov ax,0FFh
    push ax     ; ss:[bp+0Ah]    ; 最低分  默认值为FF
    mov ax,00h
    push ax     ; ss:[bp+8h]     ; 90-100 人数
    push ax     ; ss:[bp+6h]     ; 80-89 人数
    push ax     ; ss:[bp+4h]     ; 60-79 人数
    push ax     ; ss:[bp+2h]     ; 60以下人数
    push ax     ; ss:[bp]        ; 临时变量
    mov bp,sp

; 循环接收输入
; 1:录入数据
; 2:查询数据
; 3:排序数据
; 4:显示所有数据
; 5:统计数据
; 8:退出

    dispmsg Enter_string 
while_1:
    mov_dssi_to_cache_area
    clear_area_ds _1
    dispmsg inpyt_range_
    mov ax,0103h    ; 接收最大1字节的字母或数字字符
    call far ptr Get_input
    xor ah,ah
    mov al,ds:[si]
    cmp al,'1'
    jz _Enter_information_1
    cmp al,'2'
    jz _Query_information_2
    cmp al,'3'
    jz _Sort_information_3
    cmp al,'4'
    jz _Display_all_information_4
    cmp al,'5'
    jz _Statistics_information_5
    cmp al,'6'
    jz _Export_information_6
    cmp al,'7'
    jz _Import_information_7
    cmp al,'8'
    jz _exit_8
    cmp al,00h
    jz while_1
    dispmsg Top_Unknow_input_error_ 
    dispmsg next_row

    jmp while_1








_Enter_information_1:
    call far ptr Enter_information_Top
    jmp while_1

_Query_information_2:
    call far ptr Query_information_Top
    jmp while_1

_Sort_information_3:
    call far ptr Quicksort_Top
    jmp while_1

_Display_all_information_4:
    call far ptr Display_all_information_Top
    jmp while_1

_Statistics_information_5:
    call far ptr  Statistics_information
    jmp while_1

_Export_information_6:
    call far ptr Export_information
    jmp while_1

_Import_information_7:
    call far ptr Import_information
    jmp while_1


_exit_8:
    mov ax,4c00h
    int 21h









;================================================================
; 获取输入函数
include Get_input.asm
;================================================================
; 数据转换相关函数
include Data_conversion.asm
;================================================================
; 输入信息函数
include Enter_information.asm
;================================================================
; 查询信息函数
include Query_information.asm
;================================================================
; 输出信息函数
include Display_information.asm
;================================================================
; 排序信息函数
include Sort_information.asm
;================================================================
; 导入导出数据函数
include Import_and_Export_information.asm
;================================================================

; 显示统计信息函数
include Statistics_information.asm
;================================================================
; 其它函数
include Other_functions.asm
;================================================================

code ends
end start



